package com.augus.swagger.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;

@Configuration
@EnableSwagger2 // 开启Swagger2
public class SwaggerConfig {

  @Bean
  public Docket docket1(){
    return new Docket(DocumentationType.SWAGGER_2).groupName("A");
  }
  @Bean
  public Docket docket2(){
    return new Docket(DocumentationType.SWAGGER_2).groupName("B");
  }
  @Bean
  public Docket docket3(){
    return new Docket(DocumentationType.SWAGGER_2).groupName("C");
  }

  // 配置了swagger 的Docket的bean实例
  @Bean
  public Docket docket(Environment environment){

    // 设置要显示的Swagger环境
    Profiles profiles = Profiles.of("dev","test");

    // 获取项目的环境 environment.acceptsProfiles 判断是否处在自己设定的环境当中
    Boolean flag = environment.acceptsProfiles(profiles);
    System.out.println(flag);

    // 获取项目的环境:
    // environment.acceptsProfiles();


    return new Docket(DocumentationType.SWAGGER_2)
        .apiInfo(apiInfo())
        .groupName("青山")
        // enable 是否启动 Swagger 如果False,则Swagger不能在游览器中访问
        .enable(flag) // false 关掉页面
        .select()
        // RequestHandlerSelectors // 配置要什么接口的方式
        // basePackage // 指定要扫描的包
        // any() // 扫描全部
        // none() // 不扫描
        // withClassAnnotation 扫描类上的主键 参数十一和注解反射对象
        // withMethodAnnotation 扫描方法上的注解
        .apis(RequestHandlerSelectors.basePackage("com.augus.swagger.controller"))
        // .paths() // 过滤什么路径
        // .paths(PathSelectors.ant("/augus/**"))
        .build();
  }
  // 配置Swagger信息 = apiInfo
  private ApiInfo apiInfo(){

    // 作者信息
    Contact contact = new Contact("青山", "http://blog.kuangstudy.com/", "2218337735@qq.com");
    return new ApiInfo("青山的SwaggerAPI文档",
        "青山不改 绿水长流 日后江湖相见 自当杯酒言欢!",
         "1.0",
        "https://gitee.com/Augus-aime/",
         contact,
        "Apache 2.0",
        "http://www.apache.org/licenses/LICENSE-2.0",
        new ArrayList());
  }
}
